package co.edu.uniquindio.logica;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * 
 * esta clase representa la calificacion en la logica del negocio 
 * @author Andres felipe abril
 * @author Luis Enrique Robledo
 *
 */
@Entity
@Table(name="Calificacion")
public class Calificacion implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/**
	 * este atributo representa la llave primaria de la entidad 
	 */
	@Id
	private int codigo;
	/**
	 * este atributo representa el puntaje o calificacion  
	 * 
	 */
	private int puntaje; 
	/**
	 * esta relacion representa que una calificacion le pertenece un vendedor
	 */
	@ManyToOne
	private Vendedor vendedor;
	/**
	 * esta relacion representa que una calificacion le pertenese un comprador
	 */
	@ManyToOne
	private Comprador comprador;
	
	/**
	 * Este metodo me permite crear una calificacion
	 * @param puntaje valor de la califiicacion
	 * @param vendedor callificado
	 * @param comprador calificado
	 * @param codigo de la calificacion
	 */
	public Calificacion(int codigo,int puntaje , Vendedor vendedor , Comprador comprador)
	{
		this.codigo=codigo;
		this.puntaje=puntaje;
		this.vendedor=vendedor;
		this.comprador=comprador;
	}
	/**
	 * metodo constructor obligatorio sin parametros
	 */
	public Calificacion()
	{
		
	}
	/**
	 * este metodo  permite obtener el punntaje de la calificacion
	 * @return el puntaje de la calificacion
	 */
	public int getPuntaje() {
		return puntaje;
	}
	/**
	 * este metodo permite modificar el puntaje de la calificacion
	 * @param el puntaje de la calificacion
	 */
	public void setPuntaje(int puntaje) {
		this.puntaje = puntaje;
	}
	/**
	 * 
	 * este metodo permite obtener el vendedor
	 * @return el vendedor
	 */
	public Vendedor getVendedor() {
		return vendedor;
	}
	/**
	 * este metodo permite modificar el vendedor
	 * @param vendedor el nuevo vendedor
	 */
	public void setVendedor(Vendedor vendedor) {
		this.vendedor = vendedor;
	}
	/**
	 * este metodo permite obtener el comprador
	 * @return el comprador
	 */
	public Comprador getComprador() {
		return comprador;
	} 
	/**
	 * este metodo permite modificar el comprador
	 * @param el comprador 
	 */
	public void setComprador(Comprador comprador) {
		this.comprador = comprador;
	}
	/**
	 * este metodo permite obtener el codigo de la calificacion
	 * @return el codigo
	 */
	public int getCodigo() {
		return codigo;
	}
	/**
	 * este metodo permite modificar el codigo de la calificacion
	 * @param el nuevo codigo
	 */
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + codigo;
		return result;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Calificacion other = (Calificacion) obj;
		if (codigo != other.codigo)
			return false;
		return true;
	}
}
